<?php namespace Common\Model;
use Hdphp\Model\Model;
/**
 * 使用goods表(商品表)
 */
Class Goods extends Model{
	//引入商品表
	protected $table = 'goods';
		/**
	 * [$validate 自动验证，各种标题、作者等是否为必填]
	 * @var array
	 */
	// protected $validate = array( 
 //    	array('gname','required','商品名称不能为空',3,3),
 //    	array('marketprice','required','市场价不能为空',3,3),
 //    	array('shopprice','required','商城价不能为空',3,3),
 //    	array('click','required','点击次数不能为空',3,3),
 //    	array('pic','required','列表图不能为空',3,3),
	// );
	/**
	 * [$auto 自动完成]
	 * [自动完成是需要条件的：][只有在create()、save()执行的时候才能被触发]
	 * @var array
	 */
	protected $auto=array(   
		//表单字段名,处理方法,方法类型,验证条件,处理时间) 
        // array('logo','getLogo','method',3,3)//方法处返出了，这儿可以被接收到
        array('time','time','function',3,1),//插入时间
        array('aid','getAid','method',3,1),//获取到当前的后台管理用户id
    );
    /**
     * [getAid 获取到当前后台管理用户id的方法]
     * @return [type] [description]
     */
    public function getAid(){
  //   	p($_SESSION);
  //   	Array
		// (
		//     [code] => 4
		//     [info] => Array
		//         (
		//             [aid] => 1
		//             [aaccount] => admin
		//             [aip] => 127.0.0.1
		//         )

		// )
    	return $_SESSION['info']['aid'];  //返回的$_SESSION下面的aid值，即为1.
    }

	/**
	 * 添加商品信息
	 * [添加三张表]
	 * [1、商品表][->add()]
	 * [2、商品属性表][->getAttrData($gid)]
	 * [3、商品详情表][->]
	 */
	public function addGoods(){
		// p(Q('post.'));
		// p(Q('post.pic'));
		// Array
		// (
		//     [0] => Upload/list/160729/77371469762857.jpg
		//     [1] => Upload/list/160729/5351469762857.jpg
		//     [2] => Upload/list/160729/18361469762857.jpg
		//     [3] => Upload/list/160729/95461469762857.jpg
		// )
		$pic = Q('post.pic');  //获取的是从页面上传过来的pic数组值，然后将其进行分解为字符串。
		$pic = implode(',', $pic); //这儿是将数组分解为字符串，然后在将字符串进行上传到数据库中.
		// p($pic);
		// Upload/list/160729/53321469762998.jpg,Upload/list/160729/55711469762998.jpg,Upload/list/160729/19541469762998.jpg,Upload/list/160729/91041469762997.jpg
		$_POST['pic'] = $pic;  //将字符串的pic压入到$_POST里面，然后在通过add进行添加到数据库中。
		// p($_POST);
		// die;
		// p($_POST);die;
		if(!$this->create($_POST,1)){  //如果没有进行create()的话，返回的是假，在控制器那儿进行接收并作出提醒
			return false;
		}
		// 这儿是添加到商品表(goods)中，
		$gid = $this->add();  //这儿是为了得到当前添加的商品gid值，是为了在商品属性那儿有gid值可进行添加，不然找不到他所对应的gid值.
		// 这儿是为了操作数据库中的商品属性表goods_attr表，并 实例化model下面的方法.
		$GattrModel = new \Common\Model\Gattr;
		$data = $GattrModel->getAttrData($gid);//操作数据的方法,在模型Gattr中操作了(进行数据的循环和组合)
		// 这儿是为了操作数据库中的商品详情表(detail)，并实例化model下面的方法
		$DetailModel = new \Common\Model\Detail;
		$data = $DetailModel->getDetailData($gid);//操作数据库的方法在Detail模型下
		// die;
		// 这儿是为了操作商品列表(goods_list表)，并添加到表中
		// 
		$GoodsListModel = new \Common\Model\GoodsList;
		$GLData = $GoodsListModel->getGLData($gid);
		// die;
		return true;
	}

	/**
	 * 修改商品信息
	 */
	public function editGoods(){
		$gid = Q('get.gid');
		// p(Q('post.pic'));
		// die;
		//1、这是修改goods表的数据
		$pic = Q('post.pic');  //获取的是从页面上传过来的pic数组值，然后将其进行分解为字符串。
		// $pic = implode(',', $pic); //这儿是将数组分解为字符串，然后在将字符串进行上传到数据库中.
		// p($pic);
		// Upload/list/160729/53321469762998.jpg,Upload/list/160729/55711469762998.jpg,Upload/list/160729/19541469762998.jpg,Upload/list/160729/91041469762997.jpg
		$_POST['pic'] = $pic;  //将字符串的pic压入到$_POST里面，然后在通过add进行添加到数据库中。
		// p(Q($_POST));
		// Upload/list/160802/52071470071896.jpg
		// Upload/list/160802/81151470072014.jpg
		// die;
		// p($_POST);die;
		if(!$this->create($_POST,1)){  //如果没有进行create()的话，返回的是假，在控制器那儿进行接收并作出提醒
			return false;
		}
		// 这儿是添加到商品表(goods)中，
		$this->save();  //这儿是为了得到当前添加的商品gid值，是为了在商品属性那儿有gid值可进行添加，不然找不到他所对应的gid值.
		///2、修改商品详情表(detail表);
		$DetailModel = new \Common\Model\Detail;
		$data = $DetailModel->getDetailData($gid);//操作数据库的方法在Detail模型下
		// 3、这儿是为了操作数据库中的商品属性表goods_attr表，并 实例化model下面的方法.
		$GattrModel = new \Common\Model\Gattr;
		$data = $GattrModel->getAttrData($gid);//操作数据的方法,在模型Gattr中操作了(进行数据的循环和组合)
		// die;
		return true;
	}

	/**
	 * [delGoods 删除商品信息]
	 * [需要删除三张表]
	 * [goods][detail][Gattr]
	 * @return [type] [description]
	 */
	public function delGoods(){
		// p(Q('get.gid'));
		$gid = Q('get.gid');
		///1、删除商品详情表(detail表);
		$DetailModel = new \Common\Model\Detail;
		// 获取到小图图册的地址并将其删除
		$pathSmall = $DetailModel->where(array('gid'=>$gid))->pluck('small');
		// 获取到中图图册的地址并将其删除
		$pathMedium = $DetailModel->where(array('gid'=>$gid))->pluck('medium');
		// 获取到大图图册的地址并将其删除
		$pathBig = $DetailModel->where(array('gid'=>$gid))->pluck('big');
		// 获取到原图的路径，并将其删除
		$pathSmall = explode(',',$pathSmall);
		$pathMedium = explode(',',$pathMedium);
		$pathBig = explode(',',$pathBig);
		// p($pathSmall);
		// // 删除本地的图片(小图)
		foreach ($pathSmall as $key => $value) {
			// p($value);
			// 大图的路径，然后在将其删除
			$path = str_replace('small/','',$value);
			$path = str_replace('_small','',$path);
			// p($path);
			unlink($path);
			unlink($value);
		}
		// 删除本地的图片(中图)
		foreach ($pathMedium as $key => $value) {
			// p($value);
			unlink($value);
		}
		// 删除本地的图片(大图)
		foreach ($pathBig as $key => $value) {
			// p($value);
			unlink($value);
		}
		//Upload/Photo/160802/small/31881470125383_small.jpg,Upload/Photo/160802/small/74871470125870_small.jpg,Upload/Photo/160802/small/47371470125965_small.jpg
		//删除商品详情的所有数据.
		if(!$DetailModel->where(array('gid'=>$gid))->delete()){
			$this->error = '商品详情表删除失败';
			return false;
		}
		// 2、删除商品属性表goods_attr表。
		$GattrModel = new \Common\Model\Gattr;
		if(!$GattrModel->where(array('gid'=>$gid))->delete()){
			$this->error = '商品属性表删除失败';
			return false;
		}
		// 3、删除货品列表goods_list表。
		$GoodsListModel = new \Common\Model\GoodsList;
		if(!$GoodsListModel->where(array('gid'=>$gid))->delete()){
			$this->error = '货品列表删除失败';
			return false;
		}
		// 4、删除商品表goods表。
		$pic = $this->where(array('gid'=>$gid))->pluck('pic');//获取到图片的路径
		// p($pic); //Upload/list/160802/18841470072492.jpg
		unlink($pic);//删除商品表中的本地图片
		if(!$this->where(array('gid'=>$gid))->delete()){
			$this->error = '商品表删除失败';
			return false;
		}
		return true;
	}
	
}

?>